/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.forge.test.roaster.model; import org.jboss.forge.roaster.Roaster; import org.jboss.forge.roaster.model.JavaType; import org.jboss.forge.roaster.model.source.JavaClassSource; import org.jboss.forge.roaster.model.source.JavaInterfaceSource; import org.junit.Assert; import org.junit.Test; public class JavaSourceCompatibilityTest { @Test public void testSupportsGenericsSource() throws Exception { JavaType<?> source = Roaster .parse("public class Test{public void test() {java.util.List<String> s = new java.util.ArrayList<String>(); for (String item : s){}}}"); Assert.assertFalse(source.hasSyntaxErrors()); } @Test public void testSupportsGenericsSourceFromConstructor() throws Exception { JavaType<?> source = Roaster .parse("public class Test{public Test() {java.util.List<String> s = new java.util.ArrayList<String>(); for (String item : s){}}}"); Assert.assertFalse(source.hasSyntaxErrors()); } @Test public void testSupportsGenericsSourceFromMethod() throws Exception { JavaClassSource source = Roaster.parse(JavaClassSource.class, "public class Test{}"); source.addMethod( "public void test() {java.util.List<String> s = new java.util.ArrayList<String>(); for (String item : s){}}"); Assert.assertFalse(source.hasSyntaxErrors()); } @Test public void testSupportsGenericsSourceFromAddedConstructor() throws Exception { JavaClassSource source = Roaster.parse(JavaClassSource.class, "public class Test{}"); // Add a new method to get JDT to recognize the new ASTs source.addMethod().setConstructor(true) .setBody("java.util.List<String> s = new java.util.ArrayList<String>(); for (String item : s){}"); // Forces a rewrite to happen via AbstractJavaSource source.toString(); Assert.assertFalse(source.hasSyntaxErrors()); } @Test public void testSupportsGenericsSourceFromAddedMethod() throws Exception { JavaClassSource source = Roaster.parse(JavaClassSource.class, "public class Test{}"); // Add a new method to get JDT to recognize the new ASTs source.addMethod().setName("test") .setBody("java.util.List<String> s = new java.util.ArrayList<String>(); for (String item : s){}"); // Forces a rewrite to happen via AbstractJavaSource source.toString(); Assert.assertFalse(source.hasSyntaxErrors()); } @Test public void testSupportsDefaultMethods() throws Exception { JavaInterfaceSource source = Roaster.parse(JavaInterfaceSource.class, "public interface Test{ public default String blah() {return null;}}"); // Forces a rewrite to happen via AbstractJavaSource source.toString(); Assert.assertFalse(source.hasSyntaxErrors()); } }